1.如何实现界面分离显示
平行视界中的左右窗口拆分显示以Page Ability为基本单位,应用界面需以Page Ability来实现和启动,才能做到左右分离显示。
例如,Page Ability A在左半边显示,如果想让其点开的新界面在右半边显示,那么新界面必须以Page Ability方式实现,如果只是打开一个Page Ability A上的子布局,新界面是无法拆分在右半边显示的。
2.如何避免启动窗口时左右跳动
应避免使用过渡Page Ability来实现Ability的启动。
例如,AbilityA->AbilityB->AbilityC->AbilityD,其中AbilityB和AbilityC是过渡窗口,平行视界模式下建议从AbilityA直接启动AbilityD。
3.如何避免界面布局兼容性问题
Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
DisplayAttributes attributes = display.getAttributes();
int width = attributes.width;
int height = attributes.height;
上述方法中,context为Page Ability对应的上下文,每个Page Ability应严格使用自己的context获取自己的窗口宽高来进行布局。
Page Ability根据资源中的方向来布局
Configuration configuration = getContext().getResourceManager().getConfiguration();
int direction = configuration.direction;
不推荐使用窗口宽>高的方法来判断Page Ability为横屏布局。因为在平行视界双窗口状态下,支持应用内拖动的场景中,其中一个Page Ability的宽可能大于高,但通过上述接口获取的direction方向统一为竖屏。如果Page Ability是在平行视界状态下全屏显示,其direction的值为横屏。
Page Ability大小切换时不重启适配
推荐应用在Page Ability窗口大小切换时不重启适配。请在config.json文件中,对abilities对象的configChanges属性做如下配置:
{
…
“abilities”: [
{
…
“configChanges”: [“layout”, “orientation”],
…
}
],
…
}
并在Page Ability的onConfigurationUpdated()回调中更新宽高刷新布局。
避免Page Ability子布局的缺省重用
平行视界下,左右Page Ability同时显示,两个Page Ability中不能存在共用的公共布局模块。
布局自适应
应用复写onConfigurationUpdated()方法,重新获取窗口宽高等信息,并对界面布局做相应调整,如切换布局、调整控件位置和间距等。
public void onConfigurationUpdated (Configuration configuration) {
super. onConfigurationUpdated (neconfiguration);
Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
DisplayAttributes attributes = display.getAttributes();
int width = attributes.width;
int height = attributes.height;
}